package Trab.ES1.Interface;

import Perfil.PerfilUsuario;
import Trab.ES1.Utilidades.Fachada;
import java.util.Scanner;

/**
 *
 * @author Grupo H
 */
public class TelaInicial 
{
    Fachada fachada;
    
    public TelaInicial()
    {
        fachada = Fachada.getInstancia();
        System.out.println("Bem vindo ao Miojo Não!");
        inicio();
    }
    
    private void inicio()
    {
        Scanner in = new Scanner(System.in);
        int resp;
        do
        {
            System.out.println("1-Entrar com usuário existente\n2-Criar uma conta\n3-Buscar\n4-Sair");
            resp = in.nextInt();
            in.nextLine();        
            switch(resp)
            {
                case 1:
                    validaUsuario();
                    break;
                case 2:
                    registraNovoUsuario();
                    break;
                case 3:
                    new Busca();
                    break;
                case 4:
                    break;
                default:
                    System.out.println("Opção inválida, tente novamente");
            }
        } while(resp != 4);
    }
    
    private void registraNovoUsuario()
    {
        String login = insereLogin();
        String senha = insereSenha();
        String nomePublico = insereNomePublico();
        fachada.criaNovoUsuario(login, senha, nomePublico);
        System.out.println("Conta criada com sucesso.");
        mostraPerfilUsuario(login,senha);
    }
    
    private String insereLogin()
    {
        Scanner in = new Scanner(System.in);
        String login = "";
        System.out.println("Por favor, escolha um login: ");
        do
        {
            login = in.nextLine();
            if(!fachada.verificaUnicidadeUsuario(login))
                System.out.println("Login já existente, escolha novamente: ");
        }
        while(!fachada.verificaUnicidadeUsuario(login));
        return login;
    }
    
    private String insereSenha()
    {
        Scanner in = new Scanner(System.in);
        String senha1 = "", senha2 = "";        
        do
        {
            System.out.println("Insira uma senha: ");
            senha1 = in.nextLine();            
            System.out.println("Digite a senha novamente: ");
            senha2 = in.nextLine();
            if(!senha1.equals(senha2))
                System.out.println("As senhas não são iguais.");
        } while(!senha1.equals(senha2));
        return senha1;
    }
    
    private String insereNomePublico()
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Digite o nome público desejado: ");
        String nomePublico = in.nextLine();
        return nomePublico;
    }
    private void validaUsuario()
    {
        String login = "";
        String senha = "";
        Scanner in = new Scanner(System.in);
        do
        {
            System.out.println("Digite o login ou nada para sair: ");
            login = in.nextLine().trim();
            if(!login.equals(""))
            {
                System.out.println("Digite a senha: ");
                senha = in.nextLine().trim();
                if(!fachada.validaUsuario(login, senha))
                    System.out.println("Usuário ou senha inválidos.");
            }
        } while(!login.equals("") && !fachada.validaUsuario(login, senha));
        if(!login.equals(""))
            mostraPerfilUsuario(login,senha);
    }
    
    private void mostraPerfilUsuario(String login, String senha)
    {
        fachada.setUsuarioLogado(fachada.buscaUsuario(login));
        new PerfilUsuario(fachada.buscaUsuario(login), true).exibePerfil();
    }
}